#ifndef ORDERDETAILWIDGET_H
#define ORDERDETAILWIDGET_H

#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGroupBox>
#include <QLabel>
#include <QTableWidget>
#include <QScrollArea>
#include <QFrame>
#include "models.h"
#include "datamanager.h"

// 使用命名空间
using namespace RestaurantSystem;

/**
 * @brief 订单详情组件
 * 
 * 提供订单详细信息的展示功能：
 * - 订单基本信息显示
 * - 订单项明细表格
 * - 顾客信息展示
 * - 时间和状态信息
 */
class OrderDetailWidget : public QWidget
{
    Q_OBJECT

public:
    explicit OrderDetailWidget(QWidget *parent = nullptr);
    ~OrderDetailWidget();

    /**
     * @brief 设置要显示的订单
     * @param order 订单对象
     */
    void setOrder(const Order& order);
    
    /**
     * @brief 清空订单显示
     */
    void clearOrder();
    
    /**
     * @brief 检查是否有订单显示
     * @return 是否有订单
     */
    bool hasOrder() const;

private:
    /**
     * @brief 设置界面布局
     */
    void setupLayout();
    
    /**
     * @brief 填充订单基本信息
     * @param order 订单对象
     */
    void populateOrderInfo(const Order& order);
    
    /**
     * @brief 填充订单项信息
     * @param items 订单项列表
     */
    void populateOrderItems(const QList<OrderItem>& items);
    
    /**
     * @brief 填充顾客信息
     * @param customerId 顾客ID
     */
    void populateCustomerInfo(const QString& customerId);
    
    /**
     * @brief 清空所有显示内容
     */
    void clearAllContent();
    
    /**
     * @brief 获取状态显示文本和颜色
     * @param status 订单状态
     * @return 显示文本
     */
    QString getStatusDisplayText(OrderStatus status) const;
    
    /**
     * @brief 获取状态颜色
     * @param status 订单状态
     * @return 颜色字符串
     */
    QString getStatusColor(OrderStatus status) const;
    
    /**
     * @brief 格式化金额显示
     * @param amount 金额
     * @return 格式化后的字符串
     */
    QString formatAmount(double amount) const;
    
    /**
     * @brief 格式化时间显示
     * @param dateTime 时间
     * @return 格式化后的字符串
     */
    QString formatDateTime(const QDateTime& dateTime) const;

private:
    // 主布局
    QVBoxLayout* m_mainLayout;
    QScrollArea* m_scrollArea;
    QWidget* m_contentWidget;
    QVBoxLayout* m_contentLayout;
    
    // 基本信息区域
    QGroupBox* m_basicInfoGroup;
    QVBoxLayout* m_basicInfoLayout;
    QLabel* m_orderIdLabel;
    QLabel* m_statusLabel;
    QLabel* m_createTimeLabel;
    QLabel* m_completeTimeLabel;
    QLabel* m_totalAmountLabel;
    QLabel* m_paymentMethodLabel;
    
    // 顾客信息区域
    QGroupBox* m_customerInfoGroup;
    QVBoxLayout* m_customerInfoLayout;
    QLabel* m_customerNameLabel;
    QLabel* m_customerIdLabel;
    
    // 订单项区域
    QGroupBox* m_itemsGroup;
    QVBoxLayout* m_itemsLayout;
    QTableWidget* m_itemsTable;
    QLabel* m_itemsSummaryLabel;
    
    // 空状态显示
    QLabel* m_emptyStateLabel;
    
    // 当前订单
    Order m_currentOrder;
    bool m_hasOrder;
};

#endif // ORDERDETAILWIDGET_H
